package com.kaisa.activity;

import android.app.Application;
import android.widget.Toast;

import com.baidu.mapapi.SDKInitializer;
import com.kaisa.activity.netstate.NetChangeObserver;
import com.kaisa.activity.netstate.NetworkStateReceiver;
import com.kaisa.activity.utils.AppConfig;
import com.kaisa.activity.utils.CrashHandler;
import com.kaisa.activity.utils.FileUtils;

import org.xutils.DbManager;
import org.xutils.x;

import java.io.File;

import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.onekeyshare.OnekeyShare;


/**
 * 1.网络判断
 * 2.三方库初始化
 * 3.全局变量
 * 4.数据库初始化
 * 5.全局异常处理
 * 6.工具类的初始化
 * Created by 123 on 2015/12/9.
 */
public class BaseApp extends Application {
    private static BaseApp app;
    private static DbManager db;
    private NetChangeObserver nb = new NetChangeObserver();

    @Override
    public void onCreate() {
        super.onCreate();
        app = this;
        x.Ext.init(this);
        ShareSDK.initSDK(this);
        db = x.getDb(FileUtils.getConfig());
        createDB();
        SDKInitializer.initialize(this);
    }

    /**
     * 创建数据库
     */
    private void createDB() {
        File file = new File(FileUtils.getDbFile() + File.separator + AppConfig.DB_NAME);
        if (!file.exists()) {
            DbManager.DaoConfig config = FileUtils.getConfig();
            db = x.getDb(config);
        }
    }

    public static BaseApp getInstance() {
        return app;
    }

    public static DbManager getDB() {
        return db;
    }


    public void toastShow(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }

    /**
     * 全局异常处理
     */
    public void initCrash() {
        CrashHandler.getInstance().init(this);
        CrashHandler.getInstance().sendPreviousReportsToServer();
    }

    /**
     * 初始化网络监听
     */
    public void initNetWork() {
        NetworkStateReceiver.registerNetworkStateReceiver(this);
        NetworkStateReceiver.registerObserver(nb);
    }

    /**
     * 取消网络监听
     */
    public void unRegistNetwrokStateReceiver() {
        if (nb == null) {
            NetworkStateReceiver.removeRegisterObserver(nb);
        }
        NetworkStateReceiver.unRegisterNetworkStateReceiver(this);
    }

    public void showShare(String txt, String url) {
        ShareSDK.initSDK(this);
        OnekeyShare oks = new OnekeyShare();
        //关闭sso授权
        oks.disableSSOWhenAuthorize();

        // 分享时Notification的图标和文字  2.5.9以后的版本不调用此方法
        //oks.setNotification(R.drawable.ic_launcher, getString(R.string.app_name));
        // title标题，印象笔记、邮箱、信息、微信、人人网和QQ空间使用
        oks.setTitle("凯撒旅游");
        // titleUrl是标题的网络链接，仅在人人网和QQ空间使用
        oks.setTitleUrl(url);
        // text是分享文本，所有平台都需要这个字段
        oks.setText("我正在凯撒旅游查看"+txt+"，快和我一起来一场说走就走的旅行吧。。。");
        // imagePath是图片的本地路径，Linked-In以外的平台都支持此参数
          oks.setImageUrl("http://pic.pptbz.com/pptpic/201505/2015052211012624.jpg");//确保SDcard下面存在此张图片
        // url仅在微信（包括好友和朋友圈）中使用
//        oks.setUrl("http://sharesdk.cn");
        // comment是我对这条分享的评论，仅在人人网和QQ空间使用
//        oks.setComment("我是测试评论文本");
        // site是分享此内容的网站名称，仅在QQ空间使用
//        oks.setSite(getString(R.string.app_name));
        // siteUrl是分享此内容的网站地址，仅在QQ空间使用
//        oks.setSiteUrl(url);

// 启动分享GUI
        oks.show(this);
    }
}
